package mlz.c_map;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

/*
某个班级80名学生，现在需要组织秋游活动，
班长提供了四个景点依次是(A、B、C、D),每个学生只能选择一个景点，
请统计出最终哪个景点想去的人数最多。

需求分析:
1.首先可以将80个学生选择的景点都放入到一个集合中
2.准备是一个Map集合用来存储景点,以及景点被选择的次数
3.进行遍历80个学生选择的景点的集合,得到每一个景点,判断map集合中是否包含这个景点
    如果是包含 则景点 = 1
    如果是不包含 则获取这个景点原先的值,然后再存入 景点=原先的值-1. 新的值覆盖旧的值
 */
public class WorkDemo {
    public static void main(String[] args) {
        //1.把80个学生选择的景点数据添加到程序中
        ArrayList<String> data = new ArrayList<>();
        String[] selects = {"A","B","C","D"};
        //随机选择一个景点存入
        Random r = new Random();
        for (int i = 1; i <= 80; i++) {
            //每次模拟一个学生选择一个景点,存入到集合中
            int index = r.nextInt(4);// 0 1 2 3
            data.add(selects[index]);
        }
        System.out.println(data.size());

        //2.开始统计每个景点的投票人数
        //准备一个Map集合用来统计最终的结果
        HashMap<String,Integer> map = new HashMap<>();

        //3. 开始遍历80个景点数据
        for(String s : data){
            //问Map集合中是否存在当前的这个景点
            if (map.containsKey(s)){
                //说明这个景点之前统计过,就可以让当前的值 + 1. 存入到map集合中
                map.put(s,map.get(s) + 1);
            }else {
                //说明这个景点之前是没有统计过得,是第一次次进行统计 景点次数 = 1
                map.put(s,1);
            }
        }
        System.out.println(map);
    }
}






